#ifndef __ISTATEMANAGER_H__
#define __ISTATEMANAGER_H__

#include "IStateHandler.h"

class IStateManager
{
public:
    IStateManager()                 {}
    virtual ~IStateManager()        {}

    virtual void AddStateHandler(IStateHandler *nsh,u32 FirstState)			= 0;
    virtual void Update()													= 0;

    virtual void ChangeState(IStateHandler *sh,u32 newState)				= 0;
    virtual void SetFinish(IStateHandler *sh)								= 0;
};

POWERLIBRARYENGINE_API IStateManager *GetStateManager();
POWERLIBRARYENGINE_API void DeleteStateManager();
void SetStateManager(IStateManager *nv);
#define StateManager	GetStateManager()

#endif
